﻿IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ReporteVentas')
	BEGIN
		DROP  Procedure  ReporteVentas
	END

GO

CREATE Procedure ReporteVentas

	(
		@fechaini datetime,
		@fechafinal datetime,
		@idCliente int 
	)


AS
begin
if(@idCliente!=0)
		SELECT     dbo.Venta.FechaVenta,
				   dbo.Venta.Descripcion, 
				   dbo.Venta.Serie, 
				   dbo.Venta.Numero,
				   dbo.Bien.Nombre,
				   dbo.DetalleVenta.Cantida, 
				   dbo.DetalleVenta.Monto,
				   dbo.DetalleVenta.Descripcion AS 'Desc.',
				   dbo.UnidadMedidia.Abreviatura,
				   dbo.[Natural].Apellidos+', '+dbo.[Natural].Nombre AS 'Cliente N/J'
		           
		           
		FROM         dbo.Venta INNER JOIN
					 dbo.DetalleVenta ON dbo.Venta.IdVenta = dbo.DetalleVenta.IdVenta INNER JOIN
					 dbo.Bien ON dbo.DetalleVenta.IdBien = dbo.Bien.IdBien INNER JOIN
					 dbo.Cliente ON dbo.Venta.IdCliente = dbo.Cliente.IdCliente INNER JOIN
					 dbo.Empleados ON dbo.Venta.IdEmpleado = dbo.Empleados.IdEmpleado INNER JOIN
					 dbo.UnidadMedidia ON dbo.Bien.IdUnidadMedida = dbo.UnidadMedidia.IdUnidadMedida INNER JOIN
					 dbo.[Natural] ON dbo.Cliente.IdCliente = dbo.[Natural].IdCliente
					 where   dbo.Venta.IdCliente=@idCliente and dbo.Venta.FechaVenta between @fechaini and @fechafinal
		           
		union
		 
		SELECT     dbo.Venta.FechaVenta,
				   dbo.Venta.Descripcion,
				   dbo.Venta.Serie, dbo.Venta.Numero,
				   dbo.Bien.Nombre, 
				   dbo.DetalleVenta.Cantida, 
				   dbo.DetalleVenta.Monto, 
				   dbo.DetalleVenta.Descripcion AS 'Desc',
				   dbo.UnidadMedidia.Abreviatura,
				   dbo.Juridico.RazonSocial as 'Cliente N/J'
		FROM         dbo.Venta INNER JOIN
							  dbo.DetalleVenta ON dbo.Venta.IdVenta = dbo.DetalleVenta.IdVenta INNER JOIN
							  dbo.Bien ON dbo.DetalleVenta.IdBien = dbo.Bien.IdBien INNER JOIN
							  dbo.Cliente ON dbo.Venta.IdCliente = dbo.Cliente.IdCliente INNER JOIN
							  dbo.Empleados ON dbo.Venta.IdEmpleado = dbo.Empleados.IdEmpleado INNER JOIN
							  dbo.UnidadMedidia ON dbo.Bien.IdUnidadMedida = dbo.UnidadMedidia.IdUnidadMedida INNER JOIN
							  dbo.Juridico ON dbo.Cliente.IdCliente = dbo.Juridico.IdCliente 
							   where   dbo.Venta.IdCliente=@idCliente and dbo.Venta.FechaVenta between @fechaini and @fechafinal
else
    		SELECT     dbo.Venta.FechaVenta,
				   dbo.Venta.Descripcion, 
				   dbo.Venta.Serie, 
				   dbo.Venta.Numero,
				   dbo.Bien.Nombre,
				   dbo.DetalleVenta.Cantida, 
				   dbo.DetalleVenta.Monto,
				   dbo.DetalleVenta.Descripcion AS 'Desc.',
				   dbo.UnidadMedidia.Abreviatura,
				   dbo.[Natural].Apellidos+', '+dbo.[Natural].Nombre AS 'Cliente N/J'
		           
		           
		FROM         dbo.Venta INNER JOIN
					 dbo.DetalleVenta ON dbo.Venta.IdVenta = dbo.DetalleVenta.IdVenta INNER JOIN
					 dbo.Bien ON dbo.DetalleVenta.IdBien = dbo.Bien.IdBien INNER JOIN
					 dbo.Cliente ON dbo.Venta.IdCliente = dbo.Cliente.IdCliente INNER JOIN
					 dbo.Empleados ON dbo.Venta.IdEmpleado = dbo.Empleados.IdEmpleado INNER JOIN
					 dbo.UnidadMedidia ON dbo.Bien.IdUnidadMedida = dbo.UnidadMedidia.IdUnidadMedida INNER JOIN
					 dbo.[Natural] ON dbo.Cliente.IdCliente = dbo.[Natural].IdCliente
					where dbo.Venta.FechaVenta between @fechaini and @fechafinal
		           
		union
		 
		SELECT     dbo.Venta.FechaVenta,
				   dbo.Venta.Descripcion,
				   dbo.Venta.Serie, dbo.Venta.Numero,
				   dbo.Bien.Nombre, 
				   dbo.DetalleVenta.Cantida, 
				   dbo.DetalleVenta.Monto, 
				   dbo.DetalleVenta.Descripcion AS 'Desc',
				   dbo.UnidadMedidia.Abreviatura,
				   dbo.Juridico.RazonSocial as 'Cliente N/J'
		FROM         dbo.Venta INNER JOIN
							  dbo.DetalleVenta ON dbo.Venta.IdVenta = dbo.DetalleVenta.IdVenta INNER JOIN
							  dbo.Bien ON dbo.DetalleVenta.IdBien = dbo.Bien.IdBien INNER JOIN
							  dbo.Cliente ON dbo.Venta.IdCliente = dbo.Cliente.IdCliente INNER JOIN
							  dbo.Empleados ON dbo.Venta.IdEmpleado = dbo.Empleados.IdEmpleado INNER JOIN
							  dbo.UnidadMedidia ON dbo.Bien.IdUnidadMedida = dbo.UnidadMedidia.IdUnidadMedida INNER JOIN
							  dbo.Juridico ON dbo.Cliente.IdCliente = dbo.Juridico.IdCliente 
							   where  dbo.Venta.FechaVenta between @fechaini and @fechafinal                   
end


GO


GRANT EXEC ON ReporteVentas TO PUBLIC

GO


